package com.gosophiaigit.contact.busi.service;

import java.util.List;

import com.gosophiaigit.contact.busi.entity.Contact;
import com.gosophiaigit.contact.busi.entity.ContactPartTime;
import com.gosophiaigit.contact.busi.entity.PositionUser;

public interface IContactService {

	/**
	 * 增加联系人
	 * 
	 * @param contact -- 联系人实体 ，不能为null
	 * @param contactName -- 联系人名称，不能为null
	 * @param contactGroupId -- 所属个人组ID，可以为null
	 * @param positionId -- 联系人职位ID，不能为null
	 */
	public void addContact(Contact contact, String contactName,
			Long contactGroupId, Long positionId,
			ContactPartTime contactPartTime);

	/**
	 * 删除联系人，联系人做逻辑删除，联系人账号做物理删除
	 * @param contactId -- 联系人ID
	 */
	public void delContact(Long contactId);

	/**
	 * 编辑联系人
	 * @param contact -- 联系人实体，不能为null
	 * @param contactName -- 联系人姓名，不能为null
	 * @param contactPartTime -- 社会兼职信息实体，可以为null
	 * @param positionUser -- 人员和职位关联实体，不能为null
	 */
	public void modifyContact(Contact contact, String contactName,
			ContactPartTime contactPartTime, PositionUser positionUser);

	/**
	 * 禁用启用指定联系人,同时禁用启用账号
	 * 启用：1，禁用：2
	 * @param contactId -- 联系人ID
	 * @return useFlag -- 所操作后的标识位,1或者2
	 */
	public Long openOrCloseFlag(Long contactId);
	
	/**
	 * 启用账号时，同时启用联系人(供古智调用接口)
	 * 启用：1，禁用：2
	 * @param userAccountId -- 当前登录账号Id
	 */
	public void openFlag(Long userAccountId);
	
	/**
	 * 通过ID查询Contact联系人实体
	 * @param contactId -- 联系人ID
	 * @return contact -- 联系人实体，不存在返回null
	 */
	public Contact getContactById(Long contactId);

	/**
	 * 根据用户ID得到联系人
	 * @param userInfoId 用户ID，不能为null
	 * @return contact -- 联系人 若没有返回空对象
	 */
	public Contact findContactByUserInfoId(Long userInfoId);
	
	/**
	 * 通过多个联系人Id得到Contact实体集
	 * @param contactIds -- 联系人ID集合
	 * @return -- 联系人列表
	 */
	public List<Contact> getContactByIds(Long[] contactIds);
}
